package com.summary.richtext.utils.excel.annotation;

import java.lang.annotation.*;

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RichExcelField {

    /**
     * 导出字段名（默认调用当前字段的“get”方法，如指定导出字段为对象，请填写“对象名.对象属性”，例：“area.name”、“office.
     * name”）
     */
    String value() default "" ;

    /**
     * 导出字段标题（需要添加批注请用“**”分隔，标题**批注，仅对导出模板有效）
     */
    String title();

    /**
     * 字段类型（0：导出导入；1：仅导出；2：仅导入）
     */
    int type() default 0;

    /**
     * 导出字段单元格列宽
     */
    int width() default 10;

    /**
     * 导入时是否以富文本转格式
     */
    boolean rich() default false;

    /**
     * 导出字段对齐方式（0：自动；1：靠左；2：居中；3：靠右）
     */
    int align() default 0;

    /**
     * 导出字段字段排序（升序）
     */
    int sort() default 0;

    /**
     * 反射类型
     */
    Class<?> fieldType() default Class.class;

    /**
     * 字段归属组（根据分组导出导入）
     */
    int[] groups() default {};

	/**
	 * 推测类型（默认String）
	 * 字符时间串检查，如果是时间与字符串混合列导入自动检查将时间改为字符串（YYYY—MM-dd HH:mm:ss）
	 */
	boolean typeInfer() default false;

    /**
     * 单元格数据校验类型
     *  DataValidationConstraint.ValidationType.DECIMAL
     */
    int cellType() default 0;

    /**
     * 单元格数据校验类型错误提示
     *  DataValidationConstraint.ValidationType.DECIMAL
     */
    String cellTypeText() default "输入格式不正确！";

    /**
     * 下拉类别
     */
    String selectCategory() default "";

    /**
     * 字段Id对应表，内容格式 ： 表名:要取的字段  （例：在T_EMC_EMP表的 orgId 字段上用法   T_CORE_ORG:OrgName:Id->T_CORE_ORG:OrgName:Id）
     * 使用级联下拉时，默认父级下拉
     *
     * 公式：
     *     表名:值字段:对应取值:参数条件.......
     *     表名:值字段:对应取值:参数条件.......->表名:值字段:对应取值:参数条件.......->子字段:对应的父级字段(一般用于级联下拉，存在父级下拉)
     */
    String selectTable() default "";

}
